#pragma once

#include <vector>
#include "Math.h"

class Mesh;

class Node
{
public:
	typedef std::vector<Node *> NodeList;
	Node(int id, Node* parent);
	~Node(void);

	int GetID() { 
		return mId; 
	}

	Node* GetParent() { 
		return mParent; 
	}

	void Display();

	void SetMesh(Mesh* mesh);

	Mesh* GetMesh() {
		return mMesh;
	}

	void SetPosition(const Vector3& position);
	void SetScale(const Vector3& scale);

	NodeList& GetChildNodes() { 
		return mChildNodes; 
	}

protected:
	int mId;
	Mesh* mMesh;

	Node* mParent;
	NodeList mChildNodes;

	Vector3 mPosition;
	Vector3 mScale;
};
